// pages/good-des/good-des.js
const db = wx.cloud.database()

Page({

  /**
   * 页面的初始数据
   */
  data: {
    goods: {
      _id: '',
      name: '',
      pic: '',
      price: 0,
      description: '',
      category: ''
    },
    quantity: 1,
    loading: false,
    error: null
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 获取商品ID
    const goodsId = options.id;
    if (goodsId) {
      this.loadGoodsDetail(goodsId);
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  // 加载商品详情
  loadGoodsDetail: function(goodsId) {
    this.setData({ loading: true, error: null })
    
    wx.showLoading({
      title: '加载中...',
    })

    db.collection('shop_list')
      .doc(goodsId)
      .get()
      .then(res => {
        console.log('商品详情数据：', res.data)
        this.setData({
          goods: res.data,
          loading: false
        })
        wx.hideLoading()
      })
      .catch(err => {
        console.error('获取商品详情失败：', err)
        this.setData({
          error: '加载失败，请重试',
          loading: false
        })
        wx.hideLoading()
      })
  },

  // 减少数量
  decreaseQuantity: function() {
    if (this.data.quantity > 1) {
      this.setData({
        quantity: this.data.quantity - 1
      });
    }
  },

  // 增加数量
  increaseQuantity: function() {
    this.setData({
      quantity: this.data.quantity + 1
    });
  },

  // 输入数量
  onQuantityInput: function(e) {
    const value = parseInt(e.detail.value);
    if (value > 0) {
      this.setData({
        quantity: value
      });
    }
  },

  // 加入购物车
  addToCart: function() {
    const { goods, quantity } = this.data;
    
    if (!goods._id) {
      wx.showToast({
        title: '商品信息不完整',
        icon: 'error'
      });
      return;
    }

    // 获取现有购物车数据
    let cart = wx.getStorageSync('cart') || [];
    
    // 查找商品是否已在购物车中
    let index = cart.findIndex(item => item.goods_id === goods._id);
    
    if (index === -1) {
      // 如果商品不存在，添加新商品
      cart.push({
        goods_id: goods._id,
        name: goods.name,
        pic: goods.pic,
        price: goods.price,
        description: goods.description,
        category: goods.category,
        num: quantity,
        selected: true
      });
    } else {
      // 如果商品已存在，更新数量
      cart[index].num += quantity;
    }
    
    // 保存到本地存储
    wx.setStorageSync('cart', cart);
    
    wx.showToast({
      title: '已加入购物车',
      icon: 'success',
      mask: true
    });
  },

  // 立即购买
  buyNow: function() {
    const { goods, quantity } = this.data;
    // 检查用户是否登录
    const userInfo = wx.getStorageSync('userInfo')
    if (!userInfo || !userInfo.nickName) {
      wx.showToast({
        title: '请先登录',
        icon: 'none'
      })
      setTimeout(() => {
        wx.switchTab({ url: '/pages/user/user' })
      }, 1000)
      return
    }
    if (!goods._id) {
      wx.showToast({ title: '商品信息不完整', icon: 'error' });
      return;
    }
    wx.showLoading({ title: '创建订单中...' })
    // 组装订单商品数据
    const orderGoods = [{
      goods_id: goods._id,
      name: goods.name,
      pic: goods.pic,
      price: goods.price,
      description: goods.description,
      category: goods.category,
      num: quantity,
      selected: true
    }]
    const totalAmount = goods.price * quantity
    // 运费（满99包邮）
    const shippingFee = totalAmount >= 99 ? 0 : 10
    wx.cloud.callFunction({
      name: 'createOrder',
      data: {
        goods: orderGoods,
        totalAmount: totalAmount + shippingFee,
        shippingFee: shippingFee,
        remark: ''
      },
      success: res => {
        wx.hideLoading()
        if (res.result.success) {
          wx.navigateTo({
            url: `/pages/payment/payment?orderId=${res.result.orderId}&orderNo=${res.result.orderNo}`
          })
        } else {
          wx.showToast({ title: res.result.message || '创建订单失败', icon: 'none' })
        }
      },
      fail: err => {
        wx.hideLoading()
        wx.showToast({ title: '网络错误，请重试', icon: 'none' })
      }
    })
  }
})